﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Transactions;
using Empresa.Sistema.Datos.Entidades;

namespace Empresa.Sistema.Aplicacion
{
    public class Transaccion_Prestamos
    {

        public int Adicionar(Prestamo cabecera, List<Detalle_Prestamo> detalle)
        {
            using (var tx = new TransactionScope())
            {

                int IdPrestamo = new Prestamos().Adicionar(cabecera);
                if (IdPrestamo != -1)
                {
                    foreach (var item in detalle)
                    {
                        item.IdPrestamo = IdPrestamo;
                        new Detalle_Prestamos().Adicionar(item);
                    }
                }

                tx.Complete();
                return IdPrestamo;
            }

        }

        public int Modificar(Prestamo cabecera, List<Detalle_Prestamo> detalle)
        {
            using (var tx = new TransactionScope())
            {

                new Prestamos().Modificar(cabecera);

                foreach (var item in detalle)
                {
                    if (item.EstadoMantenimiento == 1) // Adicionar
                    {
                        item.IdPrestamo = cabecera.Id;
                        new Detalle_Prestamos().Adicionar(item);
                    }
                    else if (item.EstadoMantenimiento == 2) // Modificar
                    {
                        new Detalle_Prestamos().Modificar(item);
                    }
                    else if (item.EstadoMantenimiento == 3) // Eliminar
                    {
                        new Detalle_Prestamos().Eliminar(item);
                    }

                }

                tx.Complete();
                return 1;
            }
        }

        public int Eliminar(Prestamo cabecera, List<Detalle_Prestamo> detalle)
        {
            using (var tx = new TransactionScope())
            {

                new Prestamos().Eliminar(cabecera);

                foreach (var item in detalle)
                {
                    new Detalle_Prestamos().Eliminar(item);
                }

                tx.Complete();
                return 1;
            }


        }


    }
}
